Array.prototype.in_array = function(p_val)
{
	for(var i = 0, l = this.length; i < l; i++)
		if(this[i] == p_val)
			return true;
	return false;
}

// prepend zero to number less 9
function addZ(number){
	return number > 9 ? ""+number : "0"+number;
}

var current_date = new Date();
var current_day = current_date.getDate();
var current_month = current_date.getMonth()+1;
current_day = addZ(current_day);
current_month = addZ(current_month);

var period = "byDay";
var sexOne = "all";
var sexTwo = "all";
var ageOne = "";
var ageTwo = "";
var cityOne = "0";
var cityTwo = "0";

$(document).ready(function(){
	/* graphs */
	
	//* interface
	$(".period").click(function(){
		$(".period").removeClass("submenu_button_active");
		$(this).addClass("submenu_button_active");
		period = $(this).attr("id");
		build();
	})
	
	$(".dayButton").click(function(){
		var plusDate = 86400000;
		if ($(this).attr("id") == "dayPrev")
			plusDate /= -1;
		var this_date = new Date(2011,$("#day").val().substring(3,5)-1,$("#day").val().substring(0,2));
		var new_date = new Date(this_date.getTime()+plusDate);
		$("#day").val(addZ(new_date.getDate())+"."+addZ(new_date.getMonth()+1));
	})
	
	$(".sexOne").click(function(){
		$(".sexOne").removeClass("sexy_button_active");
		$(this).addClass("sexy_button_active");
		sexOne = $(this).attr("id").substring(3);
		build();
	})
	$(".sexTwo").click(function(){
		$(".sexTwo").removeClass("sexy_button_active");
		$(this).addClass("sexy_button_active");
		sexTwo = $(this).attr("id").substring(3);
		build();
	})
	
	$(".aone").click(function(){
		if ($(".aone:checked").length < 1)
			return false;
		ageOne = "";
		$(".aone:checked").each(function(){
			ageOne += "&ageOne%5B%5D="+$(this).attr("id").substring(4);
		})
		build();
	})
	$(".atwo").click(function(){
		if ($(".atwo:checked").length < 1)
			return false;
		ageTwo = "";
		$(".atwo:checked").each(function(){
			ageTwo += "&ageTwo%5B%5D="+$(this).attr("id").substring(4);
		})
		build();
	})
	
	$("#cityOne").change(function(){
		cityOne = $(this).val();
		build();
	})
	$("#cityTwo").change(function(){
		cityTwo = $(this).val();
		build();
	})
	
	function showTooltip(x, y, contents) {
        $('<div id="tooltip">' + contents + '</div>').css( {
            position: 'absolute',
            display: 'none',
            top: y + 5,
            left: x + 15,
			font: 'bold 12pt Calibri',
            border: '1px solid #89bcd6',
            padding: '2px',
            'background-color': '#eef3f6',
            opacity: 0.95
        }).appendTo("body").fadeIn(200);
    }
	var previousPoint = null,prevSerie = null;
	var step = 1,per = "days";
	$("#placeholder").bind("plothover", function (event, pos, item) {
		if (item) {
			if (previousPoint != item.dataIndex || prevSerie != item.seriesIndex) {
				previousPoint = item.dataIndex;
				prevSerie = item.seriesIndex;
				$("#tooltip").remove();
				var x = "";
				if (step != 1)
				{
					switch (per)
					{
						case "hours":	var k = Math.floor(item.datapoint[0] / 24);
										x = addZ(item.datapoint[0]-k*24)+":00";
										break;
						case "days":	var fDate = new Date(2011,$("#date1").val().substring(3,5)-1,$("#date1").val().substring(0,2));
										fDate.setDate(fDate.getDate()+item.datapoint[0]);
										x = addZ(fDate.getDate())+"."+addZ(fDate.getMonth()+1);
										break;
						case "months":	
										var stDate = fDate.getDate()
										var months = ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"];
										x = months[fDate+item.datapoint[0]-1];
										break;
					}
				}
				else
					x = item.series.xaxis.ticks[item.datapoint[0]].label;
				var y = item.datapoint[1];
				showTooltip(item.pageX, item.pageY,x + " - " + y + " чел.");
			}
		} else {
			$("#tooltip").remove();
			previousPoint = null;
			prevSerie = null;
		}
	});
	
	//* core
	function gX(options)
	{
		var array = [];
		var month = current_date.getMonth();
		var year = current_date.getFullYear();
		
		if (period == 'byDay')
		{
			for (var i=0; i<24; i++)
				array.push([i,addZ(i)+":00"]);
			return array;
		}
		else if (period == 'byWeek')
		{
			var dayOfWeek = ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье'];
			for (var i=0; i<7; i++)
				array.push([i,dayOfWeek[i]]);
			return array;
		}
		else if (period == 'byMonth')
		{
			var daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
			if (Math.round(year/4) == year/4)
				daysInMonth[1]++;
			month++;
			var monthStr = (month > 9) ? month : "0"+month;
			
			for (var i=0; i<daysInMonth[month-1]; i++)
				array.push([i,(i+1)+"."+monthStr]);
			
			return array;
		}
		else if (period == 'byPeriod')
		{
			var per = options.period;
			var step = options.step-0;
			var count = options.count;
			console.log(step);
			switch (per)
			{
				case "hours":	for (var i = 0; i < count; i+=step)
								{
									if (i > 23)
										array.push([i,addZ(i-24)+":00"]);
									else
										array.push([i,addZ(i)+":00"])
								}
								break;
				case "days":	var fDate = new Date(2011,$("#date1").val().substring(3,5)-1,$("#date1").val().substring(0,2));
								for (var i = 0; i <= count+1; i+=step)
								{
									var sDate = addZ(fDate.getDate())+"."+addZ(fDate.getMonth()+1);
									array.push([i,sDate]);
									fDate.setDate(fDate.getDate()+step);
								}
								break;
								
				case "months":	var fDate = $("#date1").val().substring(3,5);
								var sDate = $("#date2").val().substring(3,5);
								var months = ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"];
								for (var i = 0; i <= count; i++)
									array.push([i,months[fDate-1+i]]);
								break;
			}
			return array;
		}
	}
	
	function gY(max) {
		var step = 1;
		var array = [];
		
		if (max > 10 && max <= 30)
			step = 5;
		else if (max > 30 && max <= 300)
			step = 10;
		else if (max > 300 && max <= 900)
			step = 50;
		else if (max > 900 && max <= 3000)
			step = 250;
		else if (max > 3000 && max <= 10000)
			step = 500;
		else if (max > 10000)
			step = 1000;
		
		for (var i = 0; i <= max+step; i=i+step)
			array.push([i,i]);
		
		return array;
	}
	
	function build(){
		var params = "period="+period;
		switch (period)
		{
			case "byDay": params += "&fdate="+$("#day").val();
			case "byPeriod": params += "&date1="+$("#date1").val()+"&date2="+$("#date2").val();
		}
		params += "&sexOne="+sexOne+"&sexTwo="+sexTwo+ageOne+ageTwo+"&cityOne="+cityOne+"&cityTwo="+cityTwo;
		/* console.log(params);  */
		$.ajax({
				url: '/admin/statistics/graph/',
				type: "post",
				data: params,
				success: function(data){
					if (data)
					{
						var series = $.parseJSON(data);
						
						// get series
						var general = series.general;
						var line1 = series.line1;
						var line2 = series.line2;
						
						// get max points
						var maxX = general.length-1;
						var maxY = 0;
						for (var s in general)
							if (general[s][1] > maxY)
								maxY = general[s][1];
						step = series.options ? series.options.step-0 : 1;
						per = series.options ? series.options.period : "days";
						// draw graph
						$.plot($("#placeholder"), [general,line1,line2], {
							grid: { hoverable: true },
							yaxis: { max:maxY+maxY/10, min:0, ticks:gY(maxY) },
							xaxis: { max:maxX, min:0, mode: "time", ticks:gX(series.options) },
							lines: { show: true },
							points: { show: true,radius:2.5 },
							colors: ["red","#097A00","#4D99DA"]
						});
					}
				}
		});
	}
	
	var dateOptions = {
		dateFormat: 'dd.mm',
		showAnim: 'drop',
		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
		firstDay: 1,
		onSelect: function(){ if ($(this).attr("id") == "day") $("#byDay").click(); else $("#byPeriod").click(); }
	}
	$(".date").datepicker(dateOptions);
	
	// default
	$("#day").val(current_day+"."+current_month);
	$("#date1").val(current_day+"."+addZ(current_month-1));
	$("#date2").val(current_day+"."+current_month);
	$(".aone:checked").each(function(){
		ageOne += "&ageOne%5B%5D="+$(this).attr("id").substring(4);
	})
	$(".atwo:checked").each(function(){
		ageTwo += "&ageTwo%5B%5D="+$(this).attr("id").substring(4);
	})
	$("#byDay").click();
	
	
	/* moder & content */
	$(".rdelete").click(function(){
		return confirm("Действительно удалить?");
	});
	
	var dateOptions = {
		dateFormat: 'dd.mm.yy',
		showAnim: 'drop',
		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
		firstDay: 1,
		onSelect: function(dateText,inst){ $(this).css("border","") }
	};
	$("#date").datepicker(dateOptions);
	
	$(".delete:not(.photo)").click(function(){
		var parent = $(this).parent().parent();
		parent.css("background","#faa");
		var answer = confirm("Действительно удалить?");
		parent.css("background","");
		return answer;
	})
	
	$(".delete.photo").click(function(){
		var link = $(this);
		
		link.parent().css("background","#faa");
		var answer = confirm("Действительно удалить?");
		link.parent().css("background","");
		
		if (answer)
		{
			$.ajax({
				url: link.attr('href'),
				success: function(data){
					if (data == "1")
						link.parent().remove();
				}
			})
		}
		return false;
	})
	//* images
	$("a.images").fancybox({
		'transitionIn'	:	'fade',
		'transitionOut'	:	'fade',
		'speedIn'		:	600, 
		'speedOut'		:	100, 
		'cyclic'		:	true
	})
	
	/* alex_report */
	$(".community").click(function(){
		if ($(this).hasClass("c_active"))
		{
			if ($(".community.c_active").length > 1)
				$(this).removeClass("c_active");
		}
		else
			$(this).addClass("c_active");
		
		var communities = "";
		$(".community.c_active").each(function(){
			communities += $(this).attr("id")+",";
		});
		$.ajax({
			url: "/admin/report/communities?communities="+communities,
			success: function(data){
				var response = $.parseJSON(data);
				$("#all_guests").html(response.guests || 0);
				$("#all_reviews").html(response.reviews || 0);
				$("#all_comments").html(response.comments || 0);
			}
		})
		
	})
	
	$(".community:first").click();
	
	/*************** cabinet ***************/
	//***** messages
	$("#check_all_messages").change(function(){
		console.log("")
		if ($(this).attr("checked")) {
			$(".message_check").attr("checked","checked");
			$("#msgActs").fadeIn(0);
		} else {
			$(".message_check").removeAttr("checked");
			$("#msgActs").fadeOut(0);
		}
	})
	$(".message_check").change(function(){
		if ($(".message_check").length == $(".message_check:checked").length)
			$("#check_all_messages").attr("checked","checked");
		else
			$("#check_all_messages").removeAttr("checked");
		
		if ($(".message_check:checked").length == 0)
			$("#msgActs").fadeOut(0);
		else
			$("#msgActs").fadeIn(0);
	})
	$("#markNewMsg").click(function(){
		MessageAction("new");
	})
	$("#markReadMsg").click(function(){
		MessageAction("read");
	})
	$("#delMsg").click(function(){
		if (confirm("Действительно удалить выбранные сообщения?"))
			MessageAction("delete");
	})
	function MessageAction(action){
		var params = "act="+action+"&userAs="+$("#userAs").val();
		var msgs = $(".message_check:checked");
		if (msgs.length < 1)
			return false;
		msgs.each(function(){
			params += "&msg%5B%5D="+this.value;
		})
		
		$.ajax({
			url: "/admin/messages/actions",
			type: "post",
			data: params,
			success: function(){
				window.location.reload();
			}
		})
	}
	
})